/**
 * 获取模板中的关键字
 * @param template 模板
 * @returns 关键字集合
 * @example
 * getPromptTemplateKeyWords("Hi, {name}! How are you {status}?") // Returns new Set(["name", "status"])
 */
export function getPromptTemplateKeyWords(template: string): Set<string> {
    const regex = /{([^}]*)}/g;
    const matches = template.match(regex);

    if (!matches) {
        return new Set();
    }

    const keyWords = matches.map((match) => {
        return match.slice(1, -1); // 移除花括号
    });

    return new Set(keyWords);
}

/**
 * 替换模板中的关键字
 * @param template 模板
 * @param data 数据
 * @returns 替换后的模板
 * @example
 * replacePromptTemplateKeyWords("Hi, {name}! How are you {status}?", {name: "John", status: "today"}) // Returns "Hi, John! How are you today?"
 */
export function replacePromptTemplateKeyWords(
    template: string,
    data: Record<string, string>
): string {
    if (!data) {
        return template;
    }
    return template.replace(/{([^}]*)}/g, (match, key) => {
        return data[key] || match;
    });
}
